package com.example.demo.service;

import com.example.demo.model.activiti.Task;

import java.util.List;
import java.util.Map;

public interface IWorkFlowService {
    /**
     * 启动一个流程实例
     * @param processDefinitionKey 流程定义的id
     */
    void startProcessInstance(String processDefinitionKey);

    /**
     * 动态指定操作员
     * @param processDefinitionKey 流程定义的id
     */
    void dynamicAssignmentOperator(String processDefinitionKey);

    /**
     * 查询用户正在运行的任务
     * @param assignee 代表用户
     * @return
     */
    List<Task> getUserTasks(String assignee);

    /**
     * 完成任务
     * @param taskId 任务编号
     */
    void completePersonTask(String taskId);

    /**
     * 完成任务
     * @param taskId 任务编号
     * @param variables 流程变量
     */
    void completePersonTask(String taskId, Map<String, Object> variables);

    /**
     * 可以分配个人任务从一个人到另一个人（认领任务）
     * @param taskId 任务编号
     * @param userId 要被指定的办理人
     */
    void setAssigneeTask(String taskId, String userId);

}
